dofile "lib/radical.lua"

function tile(s) 
  return const.path.gfx.."game/eye/"..s..".jpg"; 
end

function nt_tile(s) 
  return const.path.gfx.."game/night/"..s..".jpg"; 
end

function cm_tile(s) 
  return const.path.gfx.."game/common/"..s..".jpg"; 
end

function dxml(s)
  return const.path.dlg.."2-eye/fall/"..s..".xml";
end

fall = engine.state {
   _stepanov    = false --Peter talked with Stepanov by phone
  ,_first       = false --Peter talked first time with Astahov
  ,_fohn        = false --Peter found Fohn
  ,_crushsite   = false --Peter talked about crushsite
  ,_locator     = false --Peter talked about locator
  ,_reason      = false --Peter talked about reason of a crush
  ,_ruins       = false --Peter talked with Stravinskiy about ruins
  ,_window      = false --Peter opened a window
  ,_hammer      = false --Peter took hammer
  ,_boxbreak    = false --Peter broke a box
  ,_boxcargo    = false --Peter put a box near cargo wagon
  ,_boxbroken   = false --Box is broken
  ,_engine      = false --Car engine is on
  ,_stairs2     = false --Peter "opened" level 2 door
  ,_stairs3     = false --Peter "opened" level 3 door
  ,_acid        = false --Peter filled a can with acid
  ,_acidwall    = false --Acid is applied to the wall
  ,_wall        = 0     --Condition of a toilet wall (0 intact, 1 half broken, 2 broken)
  ,_door1       = false --First locked door is opened (warehouse)
  ,_door2       = false --Second locked door is opened (main building, first floor)
  ,_door3       = false --Third locked door is opened (main building, sylo)
  ,_top1        = false --Bad rope is broken
  ,_top2        = false --Good rope is on window
  ,_run1        = false --Fohn ran for the first time
  ,_run2        = false --Fohn ran for the second time
  ,_fohn        = false --Peter shoots Fohn
  ,_gun         = false --Peter talked with Astahov about shooting
  ,_condition1  = false --Peter checked condition 1
  ,_condition2  = false --Peter checked condition 2

  ,_eye1        = false --First part of an eye is found
  ,_eye2        = false --Second part of an eye is found
  ,_eye3        = false --Third part of an eye is found
  ,_call        = false --Peter called boss
  ,_boss1       = false --First talk with boss
  ,_boss2       = false --Second talk with boss
  ,_final       = false --The game is final stage
  
  ,_car         = ""    --Position of a car
  ,_phonereturn = ""    --A place to return from phone
}

fall_player = musplayer.player {
   mus("pressure"):inside("run1b"):loop()
  ,mute():inside("factory5_attack"):always()
  ,mus("hemisphere"):inside("factory3"):when("fall._fohn")
  ,mus("hemisphere_short"):inside("factory5_final")
  ,mus("wind"):inside("roof1")
  ,mus("dali"):inside("complex1"):loop(2)
  ,mus("hemisphere_short"):inside("square1")
  ,mus("hemisphere"):inside("back1"):loop(3)
  ,mus("breathe"):inside("rope_break_scene4")
  ,sfx("phone_out"):inside("cellphone_call_busy"):always()
  ,sfx("phone_out"):inside("cellphone_call_nobody"):always()
  ,sfx("phone_out"):inside("cellphone_call_stepanov"):always()
  ,sfx("phonebusy"):inside("cellphone_busy"):always()
  ,sfx("footsteps"):inside("complex_ascend1"):always()
  ,sfx("footsteps"):inside("complex_ascend2"):always()
  ,sfx("footsteps"):inside("complex_ascend3"):always()
  ,sfx("footsteps"):inside("complex_ascend4"):always()
  ,sfx("footsteps"):inside("complex_descend1"):always()
  ,sfx("footsteps"):inside("complex_descend2"):always()
  ,sfx("footsteps"):inside("complex_descend3"):always()
  ,sfx("footsteps"):inside("complex_descend4"):always()
  ,sfx("items2"):inside("incomplex"):always()
  ,sfx("items2"):inside("outcomplex"):always()
  ,sfx("crush"):inside("top2_hole_descend_scene1")
  ,sfx("lightning"):inside("lightning1")
  ,sfx("note"):inside("death"):always()
  ,sfx("gun_echo"):inside("shoot1"):always()
  ,sfx("crush"):inside("rope_break_scene2")
  ,mus("descend"):inside("rope_break_scene1")
  ,mus("satiate_strings"):inside("top8"):when("fall._top1")
  ,mus("hemisphere"):inside("factory3"):when("fall._fohn")
  ,mus("hemisphere_short"):inside("factory5_final")
  ,mus("satiate_strings"):inside("back2"):when("inventory.has(can)")
}

main = engine.main {
   start        = chain_ {
                     episode_("2-fall")
                    ,exec_("inventory.add(gun)")
                    ,exec_("inventory.add(cellphone)")
                    ,exec_("fall._car='square1'")
                    ,musplayer_("fall_player")
                    ,event_("bosscall")
                    ,walk_("square1")
                  }
  ,finish       = chain_ {
                     unevent_("bosscall")
                    ,gamefile_("2-eye/car.lua")
                  }
}

gun = item {
   nam          = "Пистолет"
  ,ico          = ico "gun"
  ,img          = ico "gun-use"
  ,use          = chooseuse_ {
                     ["default"] = "Это плохая идея."
                    ,["astahov"] = "У него есть свое табельное оружение, зачем ему пистолет Петра?"
                    ,["stravinskiy"] = "Вряд ли ему нужен пистолет Петра."
                    ,["car"] = "И что именно нужно сделать?"
                    ,["window2_panels"] = "Вряд ли стрельба здесь поможет -- да и из-за каждой выпущенной пули придется писать длиннющий рапорт."
                    ,["girl4"] = walk_("shoot1")
                  }
}

eye = item {
   nam          = "Найденные фрагменты Ока"
  ,ico          = choose_ {
                     ["eyecount()==1"] = ico "eye1"
                    ,["eyecount()==2"] = ico "eye2"
                    ,["eyecount()==3"] = ico "eye3"
                  }
  ,img          = ico "eye1"
  ,activate     = function(s)
                    local dsc = "";
                    if fall._eye1 and fall._eye2 and fall._eye3 then
                      dsc = "Петру удалось найти черный ящик и оба жестких диска Ока. Далеко не все из этого хорошо перенесло крушение аппарата, однако наверняка техникам удастся хоть что-нибудь восстановить. В любом случае искать здесь больше нечего.";
                    elseif (fall._eye1 and fall._eye2 and not fall._eye3)
                        or (fall._eye1 and fall._eye3 and not fall._eye2) then
                      dsc = "Петр нашел черный ящик и одни из жестких дисков Ока. Диск в не лучшем состоянии, поэтому лучше поискать второй.";
                    elseif fall._eye2 and fall._eye3 and not fall._eye1 then
                      dsc = "Оба жестких диска Ока удалось найти, однако черный ящик никто так и не обнаружил. Надо бы поискать его -- вдруг получится найти и черный ящик еще до приезда Степанова."
                    elseif (fall._eye2 and not fall._eye3 and not fall._eye1)
                        or (fall._eye3 and not fall._eye2 and not fall._eye1) then
                      dsc = "Петр нашел лишь один из жестких дисков Ока, да и тот не в лучшем состоянии. Этого явно будет недостаточно для анализа причин падения."
                    elseif fall._eye1 and not fall._eye2 and not fall._eye3 then
                      dsc = "Черный ящик отыскать удалось, а вот жестких дисков нигде нет, точно их нарочно спрятали. Надо бы попробовать поискать и жесткие диски до приезда Степанова."
                    end
                    here().tmpdsc = dsc;
                    inventory.clearitem();
                    refresh();
                  end
}

function eyecount()
  local c = 0;
  if fall._eye1 then
    c = c + 1;
  end
  if fall._eye2 then
    c = c + 1;
  end
  if fall._eye3 then
    c = c + 1;
  end
  return c;
end

------------------------------------------------------------------------------------------
-- Main Area
------------------------------------------------------------------------------------------

square1 = scene {
   tile         = tile "brickwall1"
  ,bounds       = { 170, nil, 650}
  ,dsc          = [[Петр много лет не был в старом городе и уже забыл то странное пронзительное чувство, которое охватывает
                    тебя, когда смотришь на однообразные коробки жилых домов, тянущихся до самого горизонта, понимая при этом,
                    что в них уже давно никто не живет. Странно, но, если на окраине города начинается самый настоящий шторм,
                    то здесь солнечно, спокойно и как-то оглушающе тихо, точно Петр проехал не несколько километров, а оказался
                    на другом краю земли.^
                    Впрочем, Петр и сам был удивлен тому, как быстро он нашел это место. Это широкая, огороженная высоким бетонным
                    забором территория, похожая на какую-то промышленную зону. Почти половина этого глухого двора заставлена огромными
                    проржавевшими контейнерами, а в центре стоит пятиэтажное здание с длинной пристройкой, напоминающей склад. У
                    противоположного выезда остановились полицейские машины. Петр даже видит Астахова в новеньком костюме, который осторожно
                    идет вдоль здания, точно боится заляпать в грязи свои ботинки.^^]]
  ,obj          = { "crushsite", "window1", "car" }
  ,nav          = {
                     up = vw("К полицейским машинам", "square2")
                    ,down = vw("На другую сторону", "back1"):cnd("fall._first", "Надо бы сначала поздороваться с Астаховым.")
                  }
}

crushsite = staticitem {
   dsc          = "На земле, прямо под ногами Петра, лежат покрытые гарью {обломки}."
  ,act          = "Видимо, это все, что осталось от упавшего Ока. Что ж, негусто."
  ,showonce     = true
}

window1 = staticitem {
   dsc          = [[Слева от Петра -- пятиэтажное здание с высокими окнами, похожее на какой-то заброшенный цех, а возможно, и 
                    на старый офисный комплекс. Под одним из {окон} стоит прогнивший мусорный контейнер.]]
  ,showonce     = true
  ,act          = "Стекло выбито, однако весь оконный проем заставлен тяжелыми на вид ящиками. Так внутрь не попасть."
}

square2 = scene {
   tile         = { tile "pole", 0, 20 }
  ,bounds       = { 120, 200, 680}
  ,obj          = { "policecars", "astahov", "stravinskiy", "car" }
  ,nav          = {
                    down = vw("Отойти", "square1")
                  }
}

policecars = staticitem {
   dsc          = [[Вдалеке, у покосившихся ворот, ведущих на заброшенную улицу, стоят две полицейские {машины}, рядом с которыми 
                    как-то лениво слоняются полицейские.]]
  ,act          = "У одной из машин свежая царапина на крыле -- видимо, они выбрали менее удачный маршрут, чем Петр."
  ,showonce     = true
}

astahov = staticitem {
  dsc          = "В тени, у входа в здание, стоит {Астахов}."
  ,cnd          = not_("fall._fohn")
  ,act          = walk_("astahov_dlg")
}

astahov_dlg = dialog {
   tile         = { tile "pole", 0, 20 }
  ,bounds       = { 120, 200, 680}
  ,dsc          = choose_ {
                     ["default"] = "-- Ну надо же! Я тебя ждал не раньше, чем через час. Как ты умудрился так быстро сюда добраться?"
                    ,["fall._first"] = "Николай выглядит довольно напряженным. Совсем непохоже на него."
                  }
  ,dlg          = dxml "astahov"
  ,talkend      = "square2"
}

stravinskiy = staticitem {
   dsc          = "{Стравинский} колдует с каким-то прибором."
  ,cnd          = not_("fall._fohn")
  ,act          = walk_("stravinskiy_dlg")
}

stravinskiy_dlg = dialog {
   tile         = { tile "pole", 0, 20 }
  ,bounds       = { 120, 200, 680}
  ,dsc          = "Стравинский кажется осунувшимся и уставшим, хотя только начало дня."
  ,dlg          = dxml "stravinskiy"
  ,talkend      = "square2"
}

back1 = scene {
   tile         = { tile "debris2", 0, 400 }
  ,dsc          = [[Петру все еще не по себе. Он даже не хочет отходить далеко от полицейских машин. Все это место
                    напоминает огромную свалку, однако у Петра возникает такое чувство, словно его окружает пронзительная
                    звенящая пустота. К тому же ветер здесь такой сильный, что пробирает до костей.^^]]
  ,obj          = { "back1_debris", "car" }
  ,nav          = {
                     up = vw("В конец двора", "back2")
                    ,down = vw("К полицейским машинам", "square1")
                    ,left = vw("К контейнерам", "cargo1")
                    ,right = vw("Ко входу в здание", "entrance")
                  }
}

back1_debris = staticitem {
   dsc          = "На земле валяется странная металлическая {конструкция}, похожая на огромный ржавеющий скелет какой-то механизма."
  ,act          = "Сложно сказать, что это, однако этот остов точно не имеет никакого отношения к Оку."
  ,showonce     = true
}

entrance = scene {
   tile         = tile "brickwall3"
  ,dsc          = [[Вход завален старой мебелью и ящиками. Можно подумать, что кто-то строил здесь баррикады. Так в здание зайти не получится.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Отойти", "back1")
                  }
}

back2 = scene {
   tile         = { tile "car", 0, 360 }
  ,obj          = { "back2_car", "window2", "car" }
  ,nav          = {
                     up = vw("В конец двора", "back3")
                    ,down = vw("К полицейским машинам", "back1")
                    ,left = vw("К контейнерам", "nearcargo1")
                    ,right = vw("К окну", "window2_scene")
                  }
}

back2_car = staticitem {
   dsc          = "Прямо посреди двора стоит старая насквозь проржавевшая {машина}."
  ,act          = "Вряд ли здесь можно найти что-нибудь интересное. В любое случае, Петру не хочется копаться в этом ржавом корыте."
  ,showonce     = true
}

window2 = staticitem {
   dsc          = "Справа можно заметить еще одно {окно}, до которого несложно добраться."
  ,act          = walk_("window2_scene")
}

window2_scene = scene {
   tile         = { tile "bricks", 0, 20 }
  ,bounds       = { nil, 170 }
  ,obj          = { "window2_panels" }
  ,nav          = {
                     up = vw("Пролезть через окно", "incomplex"):
                        cnd("fall._window and not inventory.has(box)", 
                          choose_ {
                             ["not fall._window"] = "Окно заколочено, через него не пролезешь."
                            ,["default"] = "Вряд ли Петр сможет пролезть в окно, пока держит этот огромный ящик. Да и зачем он вообще нужен?"
                          }
                        )
                    ,down = vw("Слезть с мусорного контейнера", "back2")
                  }
}

incomplex = slideup {
   tile         = tile "bricks"
  ,fading       = 0
  ,endy         = -140
  ,x            = 0
  ,y            = 0
  ,step         = 4
  ,fps          = 20
  ,next         = "complex1"
}

outcomplex = slidedown {
   tile         = tile "bricks"
  ,fading       = 0
  ,x            = 0
  ,y            = 0
  ,starty       = -140
  ,step         = 4
  ,fps          = 20
  ,next         = "window2_scene"
}

window2_panels = staticitem {
   dsc          = choose_ {
                     ["default"] = 
                      [[Оконный проем заколочен металлическими {панелями}, однако такое ощущение, что сделано это было совсем 
                        недавно, как будто кто-то хотел запереть себя внутри. Кажется, что панели едва держатся -- наверняка, их
                        несложно высадить, если приложить немного силы.]]
                    ,["fall._window"] = "Оконный проем открыт, теперь через него можно пролезть."
                  }
  ,act          = "Нет, голыми руками выбить панели не получается."
}

nearcargo1 = scene {
   tile         = tile "container1"
  ,bounds       = { 100, nil, 700}
  ,obj          = { "boxplace", "boxlanded1", "boxascend", "car", "carascend1" }
  ,nav          = {
                     right = vw("К соседнему контейнеру", "nearcargo2")
                    ,down = vw("Отойти", "back2")
                  }
}

nearcargo2 = scene {
   tile         = tile "container6"
  ,bounds       = { 100, nil, 700}
  ,obj          = { "boxplace", "boxlanded1", "boxascend", "car", "carascend2" }
  ,nav          = {
                    left = vw("Вернуться", "nearcargo1")
                  }
}

boxplace = staticitem {
   dsc          = "Стена на одном из контейнеров сильно обгорела. Наверняка это след от упавших обломков Ока. Стоит внимательнее осмотреть эти {контейнеры}."
  ,act          = "Нет, так забраться на контейнеры не получится. Нужен какой-нибудь ящик, или что-то такое, что можно было бы использовать, чтобы дотянуться до верха."
  ,cnd          = not_("fall._boxcargo")
}

boxlanded1 = staticitem {
   dsc          = "Рядом с контейнером стоит большая фанерная {коробка}. С помощью нее"
  ,cnd          = if_("fall._boxcargo and not fall._boxbroken")
  ,act          = chain_ { take_("box"), unset_("fall._boxcargo"), walk_("nearcargo1") }
}

boxlanded2 = staticitem {
   dsc          = "Рядом с контейнером стоит большая фанерная {коробка}. С помощью нее"
  ,cnd          = if_("fall._boxcargo and not fall._boxbroken")
  ,act          = chain_ { take_("box"), unset_("fall._boxcargo"), walk_("nearcargo2") }
}

boxascend = staticitem {
   dsc          = "можно попробовать {забраться} на контейнер."
  ,cnd          = if_("fall._boxcargo and not fall._boxbroken")
  ,act          = chain_ { set_("fall._boxbroken"), sound_("boxbreak"), "Ящик не выдержал веса Петра и сломался." }
}

carascend1 = staticitem {
   dsc          = "Петр думает, что может попробовать {залезть} на контейнер, встав на багажник машины."
  ,cnd          = apply_("fall._car=='nearcargo1'")
  ,act          = walk_("cargo1_ascend")
}

carascend2 = staticitem {
   dsc          = "Петр думает, что может попробовать {залезть} на контейнер, встав на багажник машины."
  ,cnd          = apply_("fall._car=='nearcargo2'")
  ,act          = walk_("cargo2_ascend")
}

cargo1_ascend = slidedown {
   tile         = tile "container1"
  ,fading       = 0
  ,x            = 0
  ,y            = 400
  ,step         = 5
  ,fps          = 40
  ,next         = "oncargo1"
}
cargo1_descend = slideup {
   tile         = tile "container1"
  ,fading       = 0
  ,x            = 0
  ,y            = 400
  ,step         = 5
  ,fps          = 40
  ,next         = "nearcargo1"
}
oncargo1 = scene {
   tile         = { tile "container1", 0, 420 }
  ,dsc          = "Контейнер прогибается под каждым шагом, Петр боится, что проржавевшее железо может не выдержать, и он обрушится вниз."
  ,alwaysdsc    = true
  ,obj          = { "eye1" }
  ,nav          = {
                    down = vw("Спуститься", "cargo1_descend")
                  }
}

eye1 = staticitem {
   dsc          = "На контейнере {что-то лежит}. Очень похоже, что это и есть черный ящик Ока."
  ,act          = chain_ { set_("fall._eye1"), take_("eye"), "Это и правда оказался черный ящик. Что ж, справились и без поисковой группы." }
  ,cnd          = not_("fall._eye1")
}

cargo2_ascend = slidedown {
   tile         = tile "container6"
  ,fading       = 0
  ,x            = 0
  ,y            = 400
  ,step         = 5
  ,fps          = 40
  ,next         = "oncargo2"
}
cargo2_descend = slideup {
   tile         = tile "container6"
  ,fading       = 0
  ,x            = 0
  ,y            = 400
  ,step         = 5
  ,fps          = 40
  ,next         = "nearcargo2"
}
oncargo2 = scene {
   tile         = { tile "container6", 0, 420 }
  ,dsc          = "Контейнер прогибается под каждым шагом, Петр боится, что проржавевшее железо может не выдержать, и он обрушится вниз."
  ,alwaysdsc    = true
  ,obj          = { "oncargo2_eye" }
  ,nav          = {
                    down = vw("Спуститься", "cargo2_descend")
                  }
}

oncargo2_eye = staticitem {
   dsc          = "^Петр замечает, что на соседнем контейнере что-то лежит."
  ,cnd          = not_("fall._eye1")
}

back3 = scene {
   tile         = tile "brickwall2"
  ,bounds       = { 60, nil, 740 }
  ,dsc          = "Здесь есть лестница, ведущая ко входу к складскому помещению."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Подняться по лестнице", "ware1")
                    ,down = vw("К полицейским машинам", "back2")
                  }
}

ware1 = scene {
   tile         = tile "barrel"
  ,dsc          = [[Судя по всему, когда-то это действительно было складом, но сейчас здесь ничего нет, кроме нескольких 
                    бочек да пустых металлических контейнеров. Здесь пахнет сыростью и краской, а солнечный свет едва 
                    пробивается через мутные поросшие пылью окна у потолка. Железные сваи над головой, который держат
                    крышу, кажется, прогнили насквозь, и Петра возникает такое чувство, будто бы вся эта огромная конструкция
                    может в любую секунду обрушиться вниз. Ему даже слышится протяжный скрежет уставшего металла. Надо бы
                    убираться отсюда поскорее.^^]]
  ,obj          = { "barrel" }
  ,nav          = {
                     up = vw("К складу", "ware2")
                    ,down = vw("Спуститься вниз", "back3")
                  }
}

barrel = staticitem {
   dsc          = "Слева стоят какие-то {бочки}."
  ,act          = [[Это бочки с кислотой, которую раньше использовали в строительстве. Кислота разъедает некоторые материалы, например, 
                    щебень и известку, однако шлакоблоки из керамзита остаются целые.]]
}

ware2 = scene {
   tile         = { tile "ware1", 0, 20 }
  ,bounds       = { 60, 100 }
  ,obj          = { "ware2_blood" }
  ,nav          = {
                     up = vw("В конец склада", "ware3")
                    ,down = vw("Выйти", "ware1")
                  }
}

ware2_blood = staticitem {
   dsc          = "На бетонном полу можно заметить {пятно крови}."
  ,showonce     = true
  ,act          = [[Кровь совсем свежая. Что же здесь могло произойти? В мертвом городе часто ошиваются бездомные, -- возможно, 
                    здесь была драка. Если вместо обломков Ока, они найдут человеческий труп -- это не сильно поможет им в поисках.]]
}

ware3 = scene {
   tile         = { tile "ware2", 80, 20 }
  ,bounds       = { 250, nil, 600 }
  ,dsc          = "В концe склада можно заметить небольшое огороженное помещение."
  ,alwaysdsc    = true
  ,obj          = { "barrel2" }
  ,nav          = {
                     up = vw("В помещение", "ware4")
                    ,down = vw("К выходу со склада", "ware2")
                  }
}

barrel2 = staticitem {
   dsc          = "У стены справа стоит целая батарея {бочек}."
  ,act          = [[Это бочки с кислотой, которую раньше использовали в строительстве. Кислота разъедает некоторые материалы, например, 
                    щебень и известку, однако шлакоблоки из керамзита остаются целые.]]
}

ware4 = scene {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,alwaysdsc    = true
  ,dsc          = choose_ {
                     ["default"] = "Справа виден проход в соседнюю комнату."
                    ,["not fall._hammer"] =
                      [[Похоже, что здесь кто-то живет. На столе можно даже заметить остатки пиццы, которые
                        пролежали здесь от силы несколько дней. Справа виден проход в соседнюю комнату.]]
                  }
  ,obj          = { "hammer" }
  ,nav          = {
                     right = vw("В соседнее помещение", "ware5")
                    ,down = vw("Выйти", "ware3")
                  }
}

hammer = item {
   nam          = "Молоток"
  ,dsc          = "К тому же у стены стоит довольно приличный на вид {строительный молоток}."
  ,tak          = chain_ { set_("fall._hammer"), "Петр взял молоток." }
  ,img          = ico "hammer-use"
  ,ico          = ico "hammer"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["window2_panels"] = chain_ { sound_("tin"), set_("fall._window"), "Петр выбил молотком металлические панели. Они и правда едва держались." }
                    ,["car"] = "Машина хоть и казенная, но бить ее молотком не стоит."
                    ,["box"] = chain_ { sound_("boxbreak"), remove_("box"), drop_("box"), set_("fall._boxbreak"), "Петр разбил молотком фанерную коробку." }
                    ,["boxlanded1"] = chain_ { set_("fall._boxbroken"), sound_("boxbreak"), unset_("fall._boxcargo"), "Петр разбил молотком фанерную коробку." }
                    ,["boxlanded2"] = chain_ { set_("fall._boxbroken"), sound_("boxbreak"), unset_("fall._boxcargo"), "Петр разбил молотком фанерную коробку." }
                    ,["ware5_door"] = chain_ { sound_("smashextin"), "Дверь металлическая, выбить ее молотком не получится." }
                    ,["toilet_wall"] = 
                        choose_ {
                           ["default"] = chain_ { exec_("fall._wall=1"), sound_("bricks2"), "Часть кирпичей в кладке осыпалась." }
                          ,["fall._acidwall"] = chain_ { exec_("fall._wall=2"), sound_("bricks2"), drop_("hammer"), 
                                                            "Петр проломил в стене большую дыру, теперь здесь можно пролезть, однако древо у молотка переломилось -- теперь от него нет никакой пользы." }
                          ,["not fall._acidwall and fall._wall==1"] = chain_ { sound_("smashextin"), "Ничего не получается, кирпичи в нижних рядах стоят слишком крепко." }
                        }
                    ,["stairs2_door"] = chain_ { sound_("crush2"), set_("fall._stairs2"), "Петр размахнулся, и со всей силы ударил в дверь молотком." }
                    ,["stairs3_door"] = chain_ { sound_("crush2"), set_("fall._stairs3"), "Петр размахнулся, и со всей силы ударил в дверь молотком." }
                    ,["stairs4_door"] = chain_ { sound_("crush2"), "Петр ударил по двери молотком, но лишь пробил в ней небольшую дыру. Дверь чем-то завалена с другой стороны, пройти здесь никак не получится." }
                    ,["complex10_door"] = chain_ { sound_("smashextin"), "Дверь металлическая, высадить ее молотком не получится." }
                  }
}

ware5 = scene {
   tile         = tile "wall4"
  ,bounds       = { 200, nil, 600 }
  ,obj          = { "ware5_door" }
  ,dsc          = [[Эту комнату даже пытались как-то обставить -- пыльная изодранная мебель явно помнит еще времена до
                    катастрофы. На импровизированной постели из старого матраца снова видны пятна крови.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Выйти", "ware4")
                  }
}

ware5_door = staticitem {
   dsc          = "В другом конце комнаты -- металлическая {дверь}."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("doorclosed"), "Дверь закрыта." }
                    ,["fall._door1"] = chain_ { sound_("dooropen"), walk_("factory5_final") }
                  }
}

------------------------------------------------------------------------------------------
-- Cargo Area
------------------------------------------------------------------------------------------

cargo1 = scene {
   tile         = tile "container2"
  ,bounds       = { 90, nil, 710 }
  ,obj          = { "cargo1_burn", "trashbag" }
  ,nav          = {
                     up = vw("К стене", "cargo2")
                    ,down = vw("Отойти от контейнеров", "back1")
                  }
}

cargo1_burn = staticitem {
   dsc          = "На контейнере справа можно заметить {подпалину}."
  ,act          = "Быть может, сюда угодил обломок Ока, но определить это сейчас довольно сложно."
  ,showonce     = true
}

trashbag = staticitem {
   dsc          = "На мусорном диспенсере лежат какие-то черные бесформенные {предметы}."
  ,act          = "Это обычные полиэтиленовые мешки с мусором."
  ,showonce     = true
}

cargo2 = scene {
   tile         = tile "container5"
  ,dsc          = "Здесь нет ничего интересного, просто куча хлама."
  ,alwaysdsc    = true
  ,nav          = {
                     down = vw("К выходу от контейнеров", "cargo1")
                    ,right = vw("Пройти между контейнерами", "cargo3")
                  }
}

cargo3 = scene {
   tile         = tile "container4"
  ,bounds       = { 155, nil, 640 }
  ,obj          = { "wreckage2" }
  ,nav          = {
                     up = vw("В конец", "cargo4")
                    ,down = vw("К выходу от контейнеров", "cargo2")
                  }
}

wreckage2 = staticitem {
   dsc          = "А вот и второе {место падения} -- трава между контейнерами выгорела, и на земле лежат покрывшиеся черной копотью обломки."
  ,act          = "К сожалению, черного ящика тут нет. Придется искать дальше."
  ,showonce     = true
}

cargo4 = scene {
   tile         = tile "container3"
  ,dsc          = "Сложно поверить в то, что все эти контейнеры стоят здесь уже почти тридцать лет."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец", "cargo5")
                    ,down = vw("К выходу от контейнеров", "cargo3")
                  }
}

cargo5 = scene {
   tile         = tile "container2"
  ,bounds       = { 90, nil, 710 }
  ,dsc          = "Многие контейнеры прогнили насквозь, и в их стенах зияют огромные рваные дыры."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец", "cargo6")
                    ,down = vw("К выходу от контейнеров", "cargo4")
                  }
}

cargo6 = scene {
   tile         = tile "container7"
  ,dsc          = "Вся площадка завалена каким-то хламом. К тому же, здесь стоит отвратительный запах."
  ,alwaysdsc    = true
  ,obj          = { "box" }
  ,nav          = {
                    down = vw("Отойти", "cargo5")
                  }
}

box = item {
   nam          = "Пустая коробка"
  ,dsc          = "Вдалеке, среди мусора, можно заметить большую {фанерную коробку}."
  ,ico          = ico "box"
  ,img          = ico "box-use"
  ,tak          = choose_ {
                     ["default"] = "Коробка оказалась пустой и не очень тяжелой. Петр поднял коробку."
                    ,["here()==nearcargo"] = "Петр поднял коробку."
                  }
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["boxplace"] = chain_ { drop_("box"), set_("fall._boxcargo"), refresh }
                    ,["window2_panels"] = "Вряд ли получится выбить металлические панели прогнившей коробкой."
                    ,["window1"] = "Зачем? Там достаточно коробок."
                    ,["car"] = "Вряд ли эта коробка настолько полезна, чтобы возить ее с собой."
                  }
}


------------------------------------------------------------------------------------------
-- Complex
------------------------------------------------------------------------------------------


complex1 = scene {
   tile         = tile "panels"
  ,enter        = choose_ {
                    ["not complex1._seen"] = set_checkpoint
                  }
  ,dsc          = [[Перед Петром простирается длинный коридор. Упавшие на пол листы жести подняли целые облака пыли, и Петр 
                    невольно прикрывает лицо рукавом пиджака. Что бы ни находилось в этом здании раньше, сейчас это просто
                    заброшенные руины. Краска со стен почти слезла, а весь потолок испещрен глубокими трещинами. Еще год-другой,
                    и вся эта постройка попросту рухнет.^^]]
  ,obj          = { "complex1_panels" }
  ,nav          = {
                     up = vw("В конец коридора", "complex2")
                    ,down = vw("Спуститься вниз", "outcomplex")
                  }
}

complex1_panels = staticitem {
   dsc          = "На полу валяются мятые листы {жести}, которые Петр выбил молотком."
  ,act          = "Их просто подпирали с другой стороны доски. Наверняка это сделали недавно, как если бы кто-то хотел перекрыть весь свет. Но зачем?"
  ,showonce     = true
}

complex2 = scene {
   tile         = tile "curtain"
  ,bounds       = { 140, nil, 700 }
  ,dsc          = "Здесь стоит отвратительный запах -- едкая химическая вонь какой-то краски, моча и сладковатая гниль."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец коридора", "complex3")
                    ,down = vw("В начало коридора", "complex1")
                    ,right = vw("В соседний коридор", "complex4")
                  }
}

complex3 = scene {
   tile         = tile "corner"
  ,bounds       = { 100, nil, 740 }
  ,dsc          = [[Справа -- дверь, к тому же видно, что она не закрыта. Впереди тоже есть проход -- дверь сорвана с петель, и 
                    можно разглядеть лестницу, ведущую наверх.]]
  ,alwaysdsc    = true
  ,nav          = {
                     right = vw("В комнату", "toilet")
                    ,up = vw("Подняться на второй этаж", "complex_ascend1")
                    ,down = vw("В начало коридора", "complex2")
                  }
}

complex4 = scene {
   tile         = tile "doors"
  ,bounds       = { 160, nil, 640 }
  ,dsc          = "У стены стоят снятые с петель двери и перегораживают большую часть коридора."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец коридора", "complex5")
                    ,down = vw("В соседний коридор", "complex2")
                  }
}

complex5 = scene {
   tile         = tile "debris4"
  ,obj          = { "complex5_debris" }
  ,nav          = {
                     up = vw("В конец коридора", "complex7")
                    ,left = vw("В помещение слева", "complex6")
                    ,down = vw("В начало коридора", "complex4")
                  }
}

complex5_debris = staticitem {
   dsc          = [[Здесь есть выход из здания, однако двери {забаррикадированы} бочками, сломанной мебелью и бетонными глыбами. Прямо посреди 
                    коридора лежит перевернутый металлический короб, похожий на старый выпотрошенный холодильник. ^^Слева -- открытая дверь в 
                    какое-то темное помещение.]]
  ,act          = "Да, видно кто-то очень не хотел что-бы в здание можно было зайти."
  ,showonce     = true
}

complex6 = scene {
   tile         = tile "ruins"
  ,obj          = { "complex6_debris", "knife" }
  ,nav          = {
                    down = vw("Выйти", "complex5")
                  }
}

complex6_debris = staticitem {
   dsc          = choose_ {
                     ["default"] = "Прямо посреди комнаты лежит массивная бетонная плита -- кажется, это часть обрушившегося потолка. На плите можно заметить какие-то темные {пятна}."
                    ,["complex6_debris._seen"] = "Прямо посреди комнаты лежит массивная бетонная плита -- кажется, это часть обрушившегося потолка. На плите можно заметить пятная крови."
                  }
  ,act          = "Это кровь. Быть может, кто-то пытался здесь перевязать свои раны. Или..."
}

knife = item {
   nam          = "Кухонный нож"
  ,dsc          = "Рядом с бетонной глыбой, на полу, валяется большой кухонный {нож}."
  ,img          = ico "knife-use"
  ,ico          = ico "knife"
  ,tak          = "Петр подобрал нож. На его лезвии можно заметить следы крови."
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["roof1_condition"] = chain_ { set_("fall._eye2"), take_("eye"), set_("fall._condition1"), drop_("knife"), sound_("blade"), "Петр попробовал открутить винты лезвием ножа, однако на последнем винте лезвие сломалось. Тем нее менее, решетка была почти снята. Внутри кондиционера, под лопастями винта, оказался жесткий диск Ока, правда, в весьма плачевном состоянии." }
                    ,["roof2_condition"] = chain_ { set_("fall._eye2"), take_("eye"), set_("fall._condition2"), drop_("knife"), sound_("blade"), "Петр попробовал открутить винты лезвием ножа, однако на последнем винте лезвие сломалось. Тем нее менее, решетка была почти снята. Внутри кондиционера, под лопастями винта, оказался жесткий диск Ока, правда, в весьма плачевном состоянии." }
                  }
}

complex7 = scene {
   tile         = tile "curtain"
  ,bounds       = { 140, nil, 700 }
  ,dsc          = "Впереди -- выход в другое крыло здания."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В соседний коридор", "complex8")
                    ,down = vw("В начало коридора", "complex5")
                  }
}

complex8 = scene {
   tile         = tile "list"
  ,dsc          = choose_ {
                     ["default"] = [[Здесь почти ничего не видно, идти приходиться на ощупь. Под ногами скрипит бетонная крошка и осыпавшаяся штукатурка. 
                                     Петр даже вздрагивает, когда наступает в темноте на лист прогнившей фанеры -- на какое-то мгновение ему кажется, что 
                                     пол начинает проседать под его ногами.]]
                    ,["complex8._seen"] = "Здесь почти ничего не видно, идти приходиться на ощупь. Под ногами скрипит бетонная крошка и осыпавшаяся штукатурка. Посреди коридора лежит огромный лист фанеры."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("Налево", "complex10")
                    ,right = vw("Направо", "complex9")
                    ,down = vw("В соседний коридор", "complex7")
                  }
}

complex9 = scene {
   tile         = tile "debris4"
  ,dsc          = [[Окно во двор перегорожено тяжелыми ящиками -- такими, что Петр при всем желании едва может сдвинуть их с места.
                    Из-за этого во всем коридоре почти непроницаемая темнота.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Вернуться", "complex8")
                  }
}

complex10 = scene {
   tile         = tile "door3"
  ,bounds       = { 80, nil, 700 }
  ,dsc          = "Проход в комнату справа завален бетонными блоками -- видимо, там тоже обрушился потолок."
  ,alwaysdsc    = true
  ,obj          = { "complex10_door" }
  ,nav          = {
                     up = vw("Через железную дверь", "factory2"):cnd("fall._door2", "Дверь закрыта на ключ.")
                    ,right = vw("В комнату справа"):cnd("false", "Зайти в эту комнату не получится, там все завалено бетонными блоками.")
                    ,left = vw("В комнату слева", "complex11")
                    ,down = vw("В центр коридора", "complex8")
                  }
}

complex10_door = staticitem {
   dsc          = "В конце коридора есть железная {дверь}."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("doorclosed"), "Дверь закрыта." }
                    ,["fall._door2"] = chain_ { sound_("dooropen"), walk_("factory2") }
                  }
}

complex11 = scene {
   tile         = { tile "armchair", 533, 366 }
  ,dsc          = "Через окно пробивается слабый солнечный свет, и Петр может немного разглядеть обстановку."
  ,obj          = { "complex11_box" }
  ,nav          = {
                    down = vw("Выйти", "complex10")
                  }
}

complex11_box = staticitem {
   dsc          = [[В этой комнате пол не засыпан штукатуркой и каменной крошкой. Можно даже подумать, что ее кто-то пытался обставить. 
                    У стены стоит старое рваное кресло, обивка которого потемнела от грязи, а рядом с ним -- невысокая офисная {тумбочка}.]]
  ,act          = chain_ { take_("hook"), sound_("drawer"), "Петр открыл тумбочку. В одном из ее ящиком оказался ржавый металлический крюк." }
  ,showonce     = true
}

hook = item {
   nam          = "Крюк"
  ,ico          = ico "hook"
  ,img          = ico "hook-use"
  ,use          = chooseuse_ {
                     ["default"] = "Это никак не поможет."
                    ,["rope"] = chain_ { drop_("hook"), drop_("rope"), take_("ropehook"), "Петр привязал веревку к крюку. Вроде держится довольно крепко." }
                  }
}

ropehook = item {
   nam          = "Веревка с крюком"
  ,ico          = ico "ropehook"
  ,img          = ico "ropehook-use"
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["top8_window"] = chain_ { sound_("items3"), drop_("ropehook"), set_("fall._top2"), "Петр зацепил веревку за верхний край рамы. Теперь можно попробовать подняться на крышу." }
                  }
}

toilet = scene {
   tile         = tile "toiletwall"
  ,bounds       = { 225, nil, 580 }
  ,dsc          = "Здесь довольно темно, Петр с трудом может что-либо разглядеть. Судя по всему, это общественный туалет."
  ,alwaysdsc    = true
  ,obj          = { "toilet_wall" }
  ,nav          = {
                    down = vw("Выйти", "complex3")
                  }
}

toilet_wall = staticitem {
   dsc          = choose_ {
                     ["default"] = "В стене есть разлом, который прикрывает наспех сооруженная {кирпичная стена}. Как будто кто-то пытался восстановить это здание."
                    ,["fall._wall==1"] = "В {кирпичной кладке}, прикрывающей разлом в стене, есть небольшая дыра."
                    ,["fall._wall==2"] = "Кирпичи в импровизированной стене, прикрывающей разлом, осыпались и образовался {проход} в другую комнату."
                  }
  ,act          = choose_ {
                     ["default"] = "Кирпичная кладка довольно неаккуратная."
                    ,["fall._wall==1"] = "Нет, дыра слишком маленькая, пролезть здесь не получится."
                    ,["fall._wall==2"] = walk_("inter")
                  }
}

complex_ascend1 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs2"
  ,next         = "stairs2"
}
complex_descend1 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs3"
  ,next         = "complex3"
}

stairs2 = scene {
   tile         = tile "door3"
  ,bounds       = { 80, nil, 700 }
  ,obj          = { "stairs2_door" }
  ,nav          = {
                     up = vw("Подняться на третий этаж.", "complex_ascend2")
                    ,left = vw("Выйти на второй этаж", "stairs2_scene"):cnd("fall._stairs2", "Дверь закрыта, пройти не получится.")
                    ,down = vw("Спуститься на первый этаж", "complex_descend1")
                  }
}

stairs2_door = staticitem {
   dsc          = choose_ {
                     ["default"] = "{Дверь} на второй этаж закрыта."
                    ,["fall._stairs2"] = "Дверь на второй этаж снесена с петель."
                  }
  ,act          = chain_ { sound_("doorclosed2"), "Открыть дверь никак не получается." }
}

stairs2_scene = scene {
   tile         = { tile "hole", 0, 20 }
  ,bounds       = { nil, 220 }
  ,dsc          = [[Дальше пройти не получится. Здесь обвалился потолок, и весь коридор завален бесформенными плитами.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Вернуться", "stairs2")
                  }
}

complex_ascend2 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs2"
  ,next         = "stairs3"
}
complex_descend2 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs3"
  ,next         = "stairs2"
}

stairs3 = scene {
   tile         = tile "door3"
  ,bounds       = { 80, nil, 700 }
  ,obj          = { "stairs3_door" }
  ,nav          = {
                     up = vw("Подняться на четвертый этаж.", "complex_ascend3")
                    ,left = vw("Выйти на третий этаж", "stairs3_scene"):cnd("fall._stairs3", "Дверь закрыта, пройти не получится.")
                    ,down = vw("Спуститься на второй этаж", "complex_descend2")
                  }
}

stairs3_door = staticitem {
   dsc          = choose_ {
                     ["default"] = "{Дверь} на третий этаж закрыта."
                    ,["fall._stairs3"] = "Дверь на третий этаж снесена с петель."
                  }
  ,act          = chain_ { sound_("doorclosed2"), "Открыть дверь никак не получается." }
}

stairs3_scene = scene {
   tile         = tile "ruins"
  ,dsc          = [[На этаже обрушился пол, пройти здесь никак не получится.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Вернуться", "stairs3")
                  }
}

complex_ascend3 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs2"
  ,next         = "stairs4"
}
complex_descend3 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs3"
  ,next         = "stairs3"
}

stairs4 = scene {
   tile         = tile "door3"
  ,bounds       = { 80, nil, 700 }
  ,obj          = { "stairs4_door" }
  ,nav          = {
                     up = vw("Подняться на пятый этаж.", "complex_ascend4")
                    ,left = vw("Выйти на четвертый этаж"):cnd("false", "Судя по всему, проход завален чем-то, пройти не получится.")
                    ,down = vw("Спуститься на третий этаж", "complex_descend3")
                  }
}

stairs4_door = staticitem {
   dsc          = "{Дверь} на четвертый этаж закрыта."
  ,act          = chain_ { sound_("doorclosed2"), "Открыть дверь никак не получается." }
}

complex_ascend4 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs2"
  ,next         = "top1"
}
complex_descend4 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = nt_tile "stairs3"
  ,next         = "stairs4"
}

top1 = scene {
   tile         = { tile "window1", 0, 20 }
  ,bounds       = { nil, 315 }
  ,dsc          = [[Дверь на последний этаж оказалась открыта. Петр вышел в пропитанный пылью душный коридор.^]]
  ,obj          = { "top1_window" }
  ,nav          = {
                     up = vw("В конец коридора", "top2")
                    ,down = vw("Спуститься на четвертый этаж", "complex_descend4")
                  }
}

top1_window = staticitem {
   dsc          = [[Через длинные потолочные {окна} падает солнечный свет, однако из-за этого обстановка вокруг кажется еще более ужасной. 
                    Весь пол усыпан штукатуркой и облезшей краской, но Петру почему-то кажется, что все вокруг него покрыто белесым рассыпающимся пеплом.
                    Вдоль стен валяется сломанная мебель и разбитые бутылки. Все двери в комнаты снесены с петель.]]
  ,act          = "Здесь наверняка можно подняться на крышу."
  ,showonce     = true
}

top2 = scene {
   tile         = tile "ruins"
  ,dsc          = "Часть стены здесь обрушилась, а весь пол испещрили огромные трещины. Нужно идти осторожнее."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец коридора", "top3")
                    ,left = vw("В коридор слева", "top4")
                    ,down = vw("К лестнице", "top1")
                  }
}

top3 = scene {
   tile         = { tile "light3", 400, 200 }
  ,dsc          = "Здесь коридор заканчивается."
  ,alwaysdsc    = true
  ,obj          = { "top3_window" }
  ,nav          = {
                    down = vw("Вернуться", "top2")
                  }
}

top3_window = staticitem {
   dsc          = "Свет из {окна} протянулся по всему полу."
  ,act          = "Из окна открывается отличный вид на площадку внизу. К тому же все стекла в нем выбиты."
  ,showonce     = true
}

top4 = scene {  
   tile         = tile "wall5"
  ,bounds       = { 100, nil, 700 }
  ,obj          = { "top4_footsteps" }
  ,nav          = {
                     up = vw("В конец коридора", "top5")
                    ,down = vw("В соседний коридор", "top2")
                  }
}

top4_footsteps = staticitem {
   dsc          = "На покрытом штукатурой полу можно заметить следы чьих-то {ботинок}."
  ,act          = [[Следы свежие. Кто-то был здесь совсем недавно. Быть может, этот человек и виноват в падении Ока? 
                    Снайпер? Петр вдруг подумал, что этот человек может быть все еще здесь.]]
  ,showonce     = true
}

top5 = scene {  
   tile         = tile "wall6"
  ,bounds       = { 100, nil, 700 }
  ,dsc          = "У Петра уже начинает кружиться голова от всей этой духоты и пыли.^^"
  ,obj          = { "top5_blood" }
  ,nav          = {
                     up = vw("В конец коридора", "top6")
                    ,down = vw("В начало коридора", "top4")
                  }
}

top5_blood = staticitem {
   dsc          = "На полу можно заметить какие-то темные {пятна}."
  ,act          = "Это снова кровь. Что же здесь произошло?"
  ,showonce     = true
}

top6 = scene {  
   tile         = tile "wall5"
  ,bounds       = { 100, nil, 700 }
  ,dsc          = "Здесь на полу -- множество следов."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В соседний коридор", "top7")
                    ,down = vw("В начало коридора", "top5")
                  }
}

top7 = scene {
   tile         = { tile "window1", 0, 20 }
  ,bounds       = { nil, 315 }
  ,dsc          = "Здесь тоже есть потолочные окна, однако все стекла в них выбиты, а рамы частично разломаны."
  ,alwaysdsc    = true
  ,obj          = { "top7_text" }
  ,nav          = {
                     left = vw("В левое крыло", "top9")
                    ,right = vw("В правое крыло", "top8")
                    ,down = vw("В соседний коридор", "top6")
                  }
}

top7_text = staticitem {
   dsc          = "На одной из стен можно заметить выцарапанные ножом {надписи}."
  ,act          = "ВНИЗУ^ВНИЗУ^ВНИЗУ^ПОТЕРЯНА^НАВСЕГДА^^ Что бы это означало?"
  ,showonce     = true
}

top8 = scene {
   tile         = tile "light2"
  ,obj          = { "top8_hole", "top8_window", "top8_rope" }
  ,nav          = {
                    down = vw("Вернуться", "top7")
                  }
}

top8_hole = staticitem {
   dsc          = "Пол здесь частично обвалился -- так, что приходится идти по кромке стены, чтобы добраться до конца коридора, -- и под ногами Петра зияет огромная черная {дыра}."
  ,act          = choose_{
                     ["default"] = 
                        [[Потолки здесь довольно высокие, а весь пол внизу усыпан острыми обломками камней. Петр не уверен, что стоит туда 
                          {top8_hole_descend|спускаться}. На одном из уступов, под обрушившимся полом, Петр замечает какой-то предмет -- судя по всему, это {top8_hole_book|книга}.]]
                    ,["fall._top1"] = 
                        [[Потолки здесь довольно высокие, а весь пол внизу усыпан острыми обломками камней. Петр не уверен, что стоит туда 
                          {top8_hole_descend|спускаться}. Внизу однако поблескивает какой-то металлический {top8_hole_hook|предмет}.]]
                  }
}

top8_hole_book = staticitem {
  act           = "Наверное, кто-то ее обронил?"
}

top8_hole_hook = staticitem {
  act           = "Видимо, это крюк, который отвязался от веревки."
}

top8_hole_descend = staticitem {
  act           = chain_ { sound_("crush"), walk_("top2_hole_descend_scene1") }
}

top8_hole_descend_scene1 = pause {
   time         = 3000
  ,next         = "top2_hole_descend_scene2"
}

top8_hole_descend_scene2 = cutscene {
   bounds       = { 200, 240, 600 }
  ,dsc          = [[Петр попытался спуститься вниз, но поскользнулся и, панически всплеснув руками, повалился в черную дыру. На
                    какое-то время он потерял сознание, а когда пришел в себя, то обнаружил, что лежит в темноте, на камнях, и
                    не может пошевелиться.]]
  ,next         = "sys_gameover"
}

top8_window = staticitem {
   dsc          = "У {окна} на потолке почти полностью выломана рама. Наверняка кто-то поднимался через это окно на крышу."
  ,act          = "Потолки здесь очень высокие. К тому же из-за дыры в полу вряд ли получилось бы пододвинуть сюда какой-то нибудь ящик. Неудивительно, что загадочный местный обитатель решил подниматься на крышу по веревке."
}

top8_rope = staticitem {
   dsc          = "Из окна свешивается {веревка}."
  ,act          = choose_ {
                     ["default"] = walk_("rope_break_scene1")
                    ,["fall._top2"] = walk_("roof1_ascend")
                  }
  ,cnd          = if_("not fall._top1 or fall._top2")
}

rope_break_scene1 = cutscene {
   bounds       = { 200, 240, 600 }
  ,enter        = set_("fall._top1")
  ,dsc          = [[Петр ухватился за веревку и стал медленно подниматься вверх. Под ним чернел глубокий разлом в полу, и казалось, что,
                    стоит ему сорваться, как он упадет в бездонную каменную пропасть. Внезапно над его головой послышался резкий хлопок и...]]
  ,next         = "rope_break_scene2"
}

rope_break_scene2 = pause {
   time         = 2000
  ,enter        = stop_music
  ,next         = "rope_break_scene3"
}

rope_break_scene3 = cutscene {
   bounds       = { 200, 240, 600 }
  ,enter        = set_("fall._top1")
  ,dsc          = [[Cпустя мгновение Петр полетел вниз. Все произошло настолько быстро, что он даже не успел ничего сообразить.
                    ^Удар. Резкая боль. 
                    ^Когда Петр пришел в себя, то обнаружил, что лежит на полу, прямо у края разлома.]]
  ,next         = "rope_break_scene4"
}

rope_break_scene4 = scene {
   bounds       = { 200, 240, 600 }
  ,nohud        = true
  ,obj          = { "rope_break_scene4_injures", "rope_break_scene4_rope" }
  ,nav          = {
                    up = vw("Подняться на ноги", chain_ { take_("rope"), walk_("top8") });
                  }
}

rope_break_scene4_injures = staticitem {
   dsc          = "Петр лежит на полу. Спина и правое колено сильно {болят}."
  ,act          = "Вроде никаких переломов нет, просто ушибы."
  ,showonce     = true
}

rope_break_scene4_rope = staticitem {
   dsc          = "В руках Петр он сжимает {веревку}."
  ,act          = "Сама веревка целая. Видимо, крюк отвязался. Петр приподнялся и стал оглядывать пол, однако крюка нигде не было. Наверное, крюк упал в дыру."
  ,showonce     = true
}

rope = item {
   nam          = "Веревка"
  ,ico          = ico "rope"
  ,img          = ico "rope-use"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["hook"] = chain_ { drop_("hook"), drop_("rope"), take_("ropehook"), "Петр привязал веревку к крюку. Вроде держится довольно крепко." }
                  }
}

roof1_descend = slideup {
   fps          = 20
  ,tile         = tile "rope"
  ,x            = 400
  ,y            = 0
  ,endy         = -300
  ,step         = 5
  ,next         = "top8"
}

roof1_ascend = slidedown {
   fps          = 20
  ,tile         = tile "rope"
  ,x            = 400
  ,y            = 0
  ,starty       = -300
  ,step         = 5
  ,next         = "roof1"
}

roof1 = scene {
   tile         = { tile "roof2", 689, 414 }
  ,dsc          = [[А дождь и правда постепенно приходит и в мертвый город. Над бесформенными панельными домами собираются темные грозовые облака, и Петр даже чувствует как на его лицо падают первые капли.]]
  ,obj          = { "roof1_storm", "roof1_condition" }
  ,nav          = {
                     left = vw("На другую часть крыши", "roof2")
                    ,down = vw("Спуститься вниз", "roof1_descend")
                  }
}

roof1_storm = staticitem {
   dsc          = "Вдалеке, у линии горизонта, небо уже совсем черное, как ночью. Можно подумать, что там бушует самый настоящий ураган. Время от времени даже яростно вспыхивают {молнии}."
  ,act          = walk_("lightning1")
  ,showonce     = true
}

lightning1 = pause {
   fading       = 0
  ,tile         = { cm_tile "lightning1", 360, 20 }
  ,time         = 1000
  ,next         = "lightning2"
}

lightning2 = cutscene {
   bounds       = { 200, 260, 600 }
  ,dsc          = [[Петр даже не может вспомнить, чтобы когда-нибудь такая погода стояла в самом начале лета. Впрочем, ездить в мертвый
                    город в выходной день ему не приходилось тоже. Если тут действительно скоро начнется сильный дождь, то он смоет все
                    улики -- если они, конечно, вообще тут есть. Надо торопиться.]]
  ,next         = "roof1"
}

roof1_condition = staticitem {
   dsc          = "^^У самого края крыши стоит массивный блок {кондиционера}."
  ,act          = "Кажется, переднюю панель часто снимали -- болты прикручены неплотно, и краска вокруг них совсем облупилась."
}

roof2 = scene {
   tile         = tile "roof1"
  ,dsc          = "Здесь точно кто-то бывал."
  ,alwaysdsc    = true
  ,obj          = { "roof2_book", "roof2_condition" }
  ,nav          = {
                    right = vw("Вернуться", "roof1")
                  }
}

roof2_book = staticitem {
   dsc          = "У кромки крыши лежит замызганная {книга}."
  ,act          = chain_ { unlock_("2-book"), "Марк Твен, «Приключения Тома Сойера и Гекльберри Финна»" }
  ,showonce     = true
}

roof2_condition = staticitem {
   dsc          = "На этой части крыши тоже есть блок {кондиционера}."
  ,act          = "Кажется, переднюю панель часто снимали -- болты прикручены неплотно, и краска вокруг них совсем облупилась."
}

top9 = scene {
   tile         = tile "light4"
  ,dsc          = "Здесь есть двери -- справа и слева. Одна из дверей распахнута, и из нее на пыльную стену падает свет."
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("В комнату слева", "top11")
                    ,right = vw("В комнату справа", "top10")
                    ,down = vw("Вернуться", "top7")
                  }
}

top10 = scene {
   tile         = tile "debris3"
  ,obj          = { "top10_bags", "can" }
  ,nav          = {
                    down = vw("Выйти", "top9")
                  }
}

top10_bags = staticitem {
   dsc          = [[На полу валяются какие-то {чемоданы}, целые листы стекла, панели от навесного потолка -- такое впечатление, что
                    кто-то специально собирал здесь все это барахло.]]
  ,act          = "Один из чемоданов оказался пустым, а во втором были лишь какие-то рваные тряпки."
  ,showonce     = true
}

can = item {
   nam          = choose_ {
                     ["default"] = "Пустая канистра"
                    ,["fall._acid"] = "Канистра с кислотой"
                  }
  ,dsc          = "Рядом с окном стоит {канистра} для бензина."
  ,tak          = "Петр подобрал канистру -- она оказалась вполне целой, без дыр. Может пригодиться."
  ,img          = ico "can-use"
  ,ico          = ico "can"
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["barrel"] = 
                      choose_ {
                         ["default"] = chain_ { set_("fall._acid"), sound_("acid"), "Петр аккуратно отлил немного кислоты в канистру." }
                        ,["fall._acid"] = "В канистре уже есть кислота."
                      }
                    ,["barrel2"] = 
                      choose_ {
                         ["default"] = chain_ { set_("fall._acid"), sound_("acid"), "Петр аккуратно отлил немного кислоты в канистру." }
                        ,["fall._acid"] = "В канистре уже есть кислота."
                      }
                    ,["toilet_wall"] = 
                      choose_ {
                         ["default"] = "Вряд ли получится обрушить стену пустой канистрой."
                        ,["fall._acid"] = 
                            chain_ { 
                              sound_("acid"), 
                              set_("fall._acidwall"), 
                              drop_("can"), 
                              exec_("if fall._wall==0 then bonus.unlock('2-acid') end"), 
                              "Петр облил стену кислотой, на первый взгляд ничего не произошло." 
                            }
                      }
                  }
}

top11 = scene {
   tile         = { tile "window2", 0, 20 }
  ,dsc          = "В комнате почти ничего нет -- только рядом с дверью валяется опрокинутый секретер без ящиков."
  ,alwaysdsc    = true
  ,bounds       = { nil, 260 }
  ,obj          = { "top11_window" }
  ,nav          = {
                    down = vw("Выйти", "top9")
                  }
}

top11_window = staticitem {
   dsc          = "По оконному стеклу медленно стекают {капли}."
  ,act          = "Неужели дождь все-таки добрался и до мертвого города?"
  ,showonce     = true
}


------------------------------------------------------------------------------------------
-- Inter area
------------------------------------------------------------------------------------------

inter = scene {
   tile         = { tile "entrance", 0, 20 }
  ,bounds       = { nil, 400 }
  ,dsc          = "Стены местами обрушились, стоит быть осторожнее. Слева есть какой-то проход,"
  ,alwaysdsc    = true
  ,obj          = { "inter_door" }
  ,nav          = {
                     left = vw("В проход налево", "factory1")
                    ,down = vw("В уборную", "toilet")
                  }
}

inter_door = staticitem {
   dsc          = "а впереди, за глыбами бетона, можно заметить железную {дверь}."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("doorclosed"), "Дверь закрыта." }
                    ,["fall._door3"] = chain_ { sound_("dooropen"), walk_("sylo") }
                  }
}

factory1 = scene {
   tile         = { tile "ceil1", 0, 20 }
  ,bounds       = { nil, 400 }
  ,dsc          = [[Это уже не основное здание, а его пристройка. Коридор широкий и практически пустой -- так, что Петру даже кажется, что от его шагов 
                    разносится эхо. C высокого потолка торчат какие-то сваи и сломанные навесные панели.]]
  ,alwaysdsc    = true
  ,obj          = { "girl1" } 
  ,nav          = {
                     up = vw("В конец коридора", "factory2_hub")
                    ,right = vw("В другую часть здания", "inter"):cnd("fall._fohn", "На это сейчас нет времени.")
                  }
}

girl1 = staticitem {
   dsc          = "У стены, в странной позе, стоит {человек}. Он как-то странно вздрагивает, как будто его бьют судороги."
  ,cnd          = not_("fall._run1")
  ,act          = walk_("run1")
}

factory2_hub = engine.hub {
  enter         = choose_ {
                     ["default"] = walk_("factory2")
                    ,["not fall._run1"] = walk_("run1b")
                  }
}

run1 = dialog {
   tile         = { tile "ceil1", 0, 20 }
  ,bounds       = { nil, 400 }
  ,src          = [[<phr a="-- Эй, не бойтесь! Я вас не трону..." b="" walk="run1b"></phr>
                    <phr a="-- Кто вы?" b="" walk="run1b"></phr>
                    <phr a="-- Ни с места! Медленно повернитесь ко мне, я вооружен!" b="" walk="run1b"></phr>]]
}

run1b = cutscene {
   bounds       = { 220, 280, 600 }
  ,enter        = chain_ { set_checkpoint, set_("fall._run1") }
  ,dsc          = "Фигура у стены вздрогнула и быстро устремилась в конец коридора."
  ,next         = "factory1"
}

factory2 = scene {
   tile         = { tile "ceil2", 0, 20 }
  ,bounds       = { nil, 400 }
  ,obj          = { "factory2_blood", "factory2_door" }
  ,nav          = {
                     up = vw("В конец коридора", "factory3")
                    ,down = vw("В начало коридора", "factory1")
                  }
}

factory2_blood = staticitem {
   dsc          = "На полю виднеются темные {пятна}."
  ,act          = [[И cнова кровь! Получается, этот человек резал сам себя. Явно он в себе -- быть может, даже под воздействием каких-нибудь наркотиков. 
                    Петр машинально проверил кобуру с пистолетом. Можно было бы позвать полицейских, но, пока он будет бегать, этот псих усмеет смыться.
                    А ведь он мог что-то видеть.]]
  ,showonce     = true
}

factory2_door = staticitem {
   dsc          = "Здесь есть массивная железная {дверь}."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("doorclosed"), "Дверь закрыта." }
                    ,["fall._door2"] = chain_ { sound_("dooropen"), walk_("complex10") }
                  }
}

factory3 = scene {
   tile         = tile "wall7"
  ,bounds       = { 110, nil, 690 }
  ,dsc          = "Здесь есть проход в широкий зал с огромными окнами."
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("В зал", 
                        choose_ {
                           ["default"] = walk_("factory4")
                          ,["fall._fohn"] = walk_("factory5_final")
                        })
                    ,down = vw("В начало коридора", "factory2")
                  }
}

factory4 = scene {
   tile         = tile "light5"
  ,dsc          = [[Из мутных, точно слюдянистых окон падает солнечный свет, однако в зале все равно довольно темно -- так, что Петр едва
                    может разглядеть обстановку. Вокруг него валяются перевернутые столы, стулья, какая-то сломанная канцелярская мебель.
                    Судя по всему, раньше здесь был склад, а может, даже какое-то офисное помещение.^^]]
  ,obj          = { "girl2" }
  ,nav          = {
                     up = vw("Подойти к девушке", "run2")
                  }
}

girl2 = staticitem {
   dsc          = [[Человек, за которым гнался Петр, неожиданно застыл посреди зала. Теперь Петр видит, что это {девушка}. 
                    Она просто стоит и неподвижно смотрит перед собой, сжавшись, точно ее тело сводит от холода.]]
  ,enter        = set_("fall._run2")
  ,act          = chain_ { sound_("not"), walkblack_("factory4", "Она никак не реагирует, точно и вовсе не замечает Петра.") }
}

run2 = scene {
   tile         = { tile "light6", 611, 524 }
  ,enter        = set_("fall._run2")
  ,dsc          = [[Стоило Петру приблизиться к девушкe, как она внезапно вскочила на ноги и устремилась в конец зала.]]
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Преследовать девушку", "factory5")
                  }
}

factory5 = scene {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,obj          = { "girl3" }
  ,nav          = {
                    down = vw("Отойти"):cnd("false", "Нет, сейчас не время расхаживать по залу. Еще несколько секунд, и она убежит.")
                  }
}

girl3 = staticitem {
   dsc          = "{Девушка} стоит у двери и, судя по всему, в спешке пытается найти от нее ключ."
  ,act          = walk_("factory5_attack1")
}

factory5_attack1 = cutscene {
   bounds       = { 300, 270, 600 }
  ,dsc          = "Девушка вздрогнула и как-то резко повернулась."
  ,next         = "factory5_attack2"
}

factory5_attack2 = timerroom {
   seconds      = 3
  ,dsc          = [[{girl4|Девушка} идет на Петра, как-то странно приволакивая одну ногу и глядя куда-то в сторону, точно боится встретиться с Петром глазами. 
                    Рука у нее поднимается как для удара. В руке что-то блестит.]]
  ,next         = "before_death"
}

girl4 = staticitem {
  act           = "Она никак реагирует, как будто и вовсе не слышит Петра."
}

before_death = pause {
   time         = 2000
  ,next         = "death"
}

death = cutscene {
   bounds       = { 200, 220, 600 }
  ,dsc          = [[Девушка стала медленно, как зомби, приближаться к Петру. Петр растерялся, так как не ожидал нападения. 
                    Она попыталась ударить его, Петр не успел вовремя увернуться, и осколок стекла лишь зацепил его руку.
                    Девушка отбросила бытулку и, точно чего-то испугавшись, побежала прочь, к выходу из зала. Придя в себя, Петр 
                    попытался найти ее, но -- безрезультатно.]]
  ,next         = "sys_gameover"
}

------------------------------------------------------------------------------------------
-- Climax
------------------------------------------------------------------------------------------

fohn_keys = item {
   nam          = "Ключи"
  ,img          = ico "keys-use"
  ,ico          = ico "keys"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["car"] = "Зачем? Машина хоть и служебная, но царапать ее ключами не хочется."
                    ,["ware5_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("unlock"), set_("fall._door1"), "Ключи подошли, Петр открыл дверь." }
                          ,["fall._door1"] = "Дверь уже открыта."
                        }
                    ,["factory5_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("unlock"), set_("fall._door1"), "Ключи подошли, Петр открыл дверь." }
                          ,["fall._door1"] = "Дверь уже открыта."
                        }
                    ,["complex10_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("unlock"), set_("fall._door2"), "Ключи подошли, Петр открыл дверь." }
                          ,["fall._door2"] = "Дверь уже открыта."
                        }
                    ,["inter_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("unlock"), set_("fall._door3"), "Ключи подошли, Петр открыл дверь." }
                          ,["fall._door3"] = "Дверь уже открыта."
                        }
                    ,["factory2_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("unlock"), set_("fall._door2"), "Ключи подошли, Петр открыл дверь." }
                          ,["fall._door2"] = "Дверь уже открыта."
                        }
                  }
}

shoot1 = pause {
   time         = 3000
  ,enter        = chain_ { inventory.clearitem, set_("fall._fohn") }
  ,next         = "factory5_final"
}

factory5_final = scene {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,fading       = function(s)
                    if not s._faded then
                      s._faded = true;
                      return 50;
                    end
                  end
  ,obj          = { "fohn", "factory5_door", "blackcop", "stravinskiy2", "astahov2" }
  ,nav          = {
                    down = vw("Выйти в коридор", "factory3")
                  }
}

fohn = staticitem {
   dsc          = "{Девушка}, напавшая на Петра, сидит рядом с"
  ,act          = walk_("fohn_dlg")
}

factory5_door = staticitem {
   dsc          = "{дверью}, прижимая руку к простреленному плечу."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("doorclosed"), "Дверь закрыта." }
                    ,["fall._door1"] = chain_ { sound_("dooropen"), walk_("ware5") }
                  }
}

blackcop = staticitem {
   dsc          = "Рядом с ней стоит {полицейский}."
  ,act          = walk_("blackcop_dlg")
}

stravinskiy2 = staticitem {
   dsc          = "{Стравинский} и"
  ,act          = walk_("stravinskiy_dlg2")
}

astahov2 = staticitem {
   dsc          = "{Астахов} что-то возбужденно обсуждают."
  ,act          = walk_("astahov_dlg2")
}

astahov_dlg2 = dialog {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,dsc          = choose_ {
                     ["default"] = " Астахов, кажется, немного оживился. Может, кофе, наконец-то, подействовал."
                    ,["not fall._gun"] = "-- А ты у нас снайпер оказывается! Или ты в голову целился?"
                  }
  ,dlg          = dxml "astahov2"
  ,talkend      = "back"
}

stravinskiy_dlg2 = dialog {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,dsc          = "Стравинский пытается что-то объяснить Астахову."
  ,dlg          = dxml "stravinskiy2"
  ,talkend      = "back"
}

fohn_dlg = dialog {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,dlg          = dxml "fohn"
  ,talkend      = "back"
}

blackcop_dlg = dialog {
   tile         = tile "wall3"
  ,bounds       = { 85, nil, 720 }
  ,dlg          = dxml "cop"
}

sylo = scene {
   tile         = tile "wall8"
  ,bounds       = { 120, nil, 680 }
  ,obj          = { "sylo_bowl", "sylo_boxes", "skewdriver" }
  ,dsc          = "Скорее всего, здесь раньше была комната уборщика или же просто какая-нибудь кладовая."
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Выйти", "inter")
                  }
}

sylo_boxes = staticitem {
   dsc          = choose_ {
                     ["default"] = "У стены стоят несколько перекосившихся металлических {этажерок},"
                    ,["inventory.has(skew)"] = "У стены стоят несколько перекосившихся металлических {этажерок}."
                  }
  ,act          = "На полках ничего не лежит."
  ,showonce     = true
}

sylo_bowl = staticitem {
   dsc          = "Прямо посреди комнаты валяется помятое перевернутое {ведро}."
  ,act          = "Под ведром ничего не оказалось. Да и что Петр ожидал там найти?"
  ,showonce     = true
}

skewdriver = item {
   nam          = "Отвертка"
  ,dsc          = "а в углу комнаты, рядом с дверью, стоит небольшой промасленный {ящик} с металлическими ручками для переноски."
  ,tak          = "В ящике оказались несколько грязных тряпок, коробка с гвоздями, сломанные сверла, а еще вполне годная отвертка."
  ,img          = ico "skew-use"
  ,ico          = ico "skew"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["roof1_condition"] = 
                        choose_ {
                           ["default"] = chain_ { set_("fall._eye3"), take_("eye"), set_("fall._condition1"), sound_("blade"), 
                              "Петр попробовал открутить винты отверткой и снял решетку с кондиционера. Внутри, за лопастями винта, оказался еще один жесткий диск Ока." }
                          ,["fall._condition1"] = "Петр уже проверял этот кондиционер. Нет смысла смотреть его еще раз."
                        }
                    ,["roof2_condition"] = 
                        choose_ {
                           ["default"] = chain_ { set_("fall._eye3"), take_("eye"), set_("fall._condition2"), sound_("blade"), 
                              "Петр попробовал открутить винты отверткой и снял решетку с кондиционера. Внутри, за лопастями винта, оказался еще один жесткий диск Ока." }
                          ,["fall._condition2"] = "Петр уже проверял этот кондиционер. Нет смысла смотреть его еще раз."
                        }
                  }
}

final = pause {
   time         = 2000
  ,next         = "main"
}

------------------------------------------------------------------------------------------
-- Car
------------------------------------------------------------------------------------------

function walkcar()
  play_sound("cardoor");
  walkblack_("incar")();
end

function exitcar()
  play_sound("cardoor");
  walkblack_(fall._car)();
end

function drive_fwd()
  if fall._car == "nearcargo2" then
    fall._car = "nearcargo1";
  elseif fall._car == "nearcargo1" then
    fall._car = "back2";
  elseif fall._car == "back2" then
    fall._car = "back1";
  elseif fall._car == "back1" then
    fall._car = "square1";
  elseif fall._car == "square1" then
    fall._car = "square2";
  end
  play_sound("cardrive");
  walkblack3_("incar")();
end

function drive_rwd()
  if fall._car == "square2" then
    fall._car = "square1";
  elseif fall._car == "square1" then
    fall._car = "back1";
  elseif fall._car == "back1" then
    fall._car = "back2";
  elseif fall._car == "back2" then
    fall._car = "nearcargo1";
  elseif fall._car == "nearcargo1" then
    fall._car = "nearcargo2";
  end
  play_sound("cardrive");
  walkblack3_("incar")();
end

car = staticitem {
   dsc          = "^^Здесь стоит служебная {машина} Петра."
  ,cnd          = if_("fall._car==deref(here())")
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("not"), "Надо бы сначала поздороваться с Астаховым." }
                    ,["fall._first and not inventory.has(box)"] = walkcar
                    ,["inventory.has(box)"] = chain_ { sound_("not"), "С таким огромным ящиком в руках Петр даже не сможет залезть в машину." }
                  }
}

incar = scene {
   tile         = tile "incar"
  ,bounds       = { 170, nil, 640 }
  ,obj          = { "incar_loc", "incar_engine", "incar_fwd", "incar_rwd" }
  ,nav          = {
                    left = vw("Выйти из машины", exitcar):cnd("not fall._engine", "Лучше сначала заглушить двигатель. Чего зря бензин жечь.")
                  }
}

incar_loc = staticitem {
   dsc          = choose_ {
                     ["fall._car=='square1'"] = "Машина стоит рядом с пятиэтажным зданием, похожим на производственный цех.^"
                    ,["fall._car=='square2'"] = "Петр подогнал свой автомобиль поближе ко второму выезду.^"
                    ,["fall._car=='back1'"] = "Машина стоит напротив входа в цех.^"
                    ,["fall._car=='back2'"] = "Машина Петра припаркована прямо посреди двора, неподалеку от старого, наполовину сгнившего автомобиля.^"
                    ,["fall._car=='nearcargo1'"] = "Петр перегнал свой автомобиль к одному из контейнеров.^"
                    ,["fall._car=='nearcargo2'"] = "Машина припаркована у дальнего контейнера.^"
                  }
}

incar_engine = staticitem {
   dsc          = choose_ {
                     ["default"] = "Двигатель {не заведен}."
                    ,["fall._engine"] = "Двигатель {заведен}."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { set_("fall._engine"), sound_("carstart"), "Петр завел двигатель." }
                    ,["fall._engine"] = chain_ { unset_("fall._engine"), sound_("carstop"), "Петр заглушил двигатель." }
                  }
}

incar_fwd = staticitem {
   dsc          = choose_ {
                     ["default"] = "Можно проехать немного {вперед}"
                    ,["fall._car=='nearcargo2'"] = "Можно проехать немного {вперед}."
                  }
  ,cnd          = if_("fall._engine and fall._car~='square2'")
  ,act          = drive_fwd
}

incar_rwd = staticitem {
   dsc          = choose_ {
                     ["default"] = "или отогнать машину {назад}."
                    ,["fall._car=='square2'"] = "Вперед проехать уже не получится, но можно отогнать машину {назад}."
                  }
  ,cnd          = if_("fall._engine and fall._car~='nearcargo2'")
  ,act          = drive_rwd
}

------------------------------------------------------------------------------------------
-- Phone
------------------------------------------------------------------------------------------

bosscall = event {
  invoke        = function(s)
                    if navigation.steps() > 20 and fall._call and not fall._boss1 then
                      play_sound("phone");
                      here().tmpdsc = "Звонит телефон.";
                    end
                    if fall._eye1 and fall._eye2 and fall._eye3 and not fall._boss2 and (fall._final or here() ~= roof2) then
                      fall._final = true;
                      play_sound("phone");
                      here().tmpdsc = "Звонит телефон.";
                    end
                  end
}

cellphone = item {
   nam          = "Мобильный телефон"
  ,ico          = ico "cellphone"
  ,activate     = choose_ {
                     ["default"] = chain_ { exec_("fall._phonereturn=deref(here())"), walk_("cellphone_use") }
                    ,["navigation.steps() > 20 and fall._call and not fall._boss1"] = exec_("here().tmpdsc='';walk('boss_dlg1');fall._boss1=true")
                    ,["fall._eye1 and fall._eye2 and fall._eye3 and not fall._boss2 and (fall._final or here() ~= roof2)"] = exec_("here().tmpdsc='';walk('boss_dlg2');fall._boss2=true")
                  }
}

boss_dlg1 = dialog {
   bounds       = { 200, 240, 600 }
  ,dsc          = "-- Оле! Петр? Звонил?"
  ,dlg          = dxml "boss1"
}

boss_dlg2 = dialog {
   bounds       = { 200, 240, 600 }
  ,dsc          = "-- Петр? Ну как у вас там дела?"
  ,dlg          = dxml "boss2"
}

phone_exit = engine.hub {
  enter         = exec_("walk(fall._phonereturn)")
}

cellphone_use = dialog {
   ondrawbg     = function(s,p)
                    drawing.draw_text(p, "Контакты", 20, 170, "white", const.fontb, 38)
                    return p;
                  end
  ,bounds       = { 20, 240 }
  ,dlg          = dxml "phone"
}

cellphone_call_busy = pause {
   time         = 2000
  ,next         = "cellphone_busy"
}
cellphone_busy = scene {
   bounds       = { 420, 240, 300 }
  ,dsc          = "Занято.^^"
  ,nohud        = true
  ,alwaysdsc    = true
  ,obj          = { xobj("{ARR Вернуться}", walk_("cellphone_use")) }
}

cellphone_call_nobody = pause {
   time         = 2000
  ,next         = "cellphone_nobody"
}
cellphone_nobody = scene {
   bounds       = { 420, 240, 300 }
  ,dsc          = "Не берет трубку.^^"
  ,nohud        = true
  ,alwaysdsc    = true
  ,obj          = { xobj("{ARR Вернуться}", walk_("cellphone_use")) }
}

cellphone_call_stepanov = pause {
   time         = 2000
  ,next         = "stepanov_dlg"
}
stepanov_dlg = dialog {
   bounds       = { 260, 240, 440 }
  ,dsc          = "-- Да, я слушаю. Петр?"
  ,dlg          = dxml "stepanov"
}